home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 April: Mac OS SDK / Dev.CD Apr 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Interfaces / PInterfaces / OpenTptInternet.p < prev    next >
Encoding:
Text File  |  1996-02-13  |  8.7 KB  |  288 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        OpenTptInternet.p
  3.  
  4.      Contains:    Public TCP/IP definitions
  5.  
  6.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  7.                  All rights reserved.
  8.  
  9. }
  10.  
  11. {$IFC UNDEFINED UsingIncludes}
  12. {$SETC UsingIncludes := 0}
  13. {$ENDC}
  14.  
  15. {$IFC NOT UsingIncludes}
  16.  UNIT OpenTptInternet;
  17.  INTERFACE
  18. {$ENDC}
  19.  
  20. {$IFC UNDEFINED __OPENTPTINTERNET__}
  21. {$SETC __OPENTPTINTERNET__ := 1}
  22.  
  23. {$I+}
  24. {$SETC OpenTptInternetIncludes := UsingIncludes}
  25. {$SETC UsingIncludes := 1}
  26.  
  27.  
  28. {$IFC UNDEFINED __OPENTRANSPORT__}
  29. {$I OpenTransport.p}
  30. {$ENDC}
  31. {    Types.p                                                        }
  32. {        ConditionalMacros.p                                        }
  33. {    MixedMode.p                                                    }
  34. {    Strings.p                                                    }
  35.  
  36. {$PUSH}
  37. {$ALIGN MAC68K}
  38. {$LibExport+}
  39.     
  40. TYPE
  41.     InetPort = UInt16;
  42.  
  43.     InetHost = UInt32;
  44.  
  45. {}
  46. {    Enums used as address type designations.}
  47. {}
  48.  
  49. CONST
  50.     AF_INET                        = 2;                            { Traditonal}
  51.     AF_DNS                        = 42;                            { Obviously, the answer to...}
  52.  
  53. {}
  54. {    Enum which can be used to bind to all IP interfaces}
  55. {    rather than a specific one.}
  56. {}
  57.     kOTAnyInetAddress            = 0;                            { Wildcard}
  58.  
  59.     
  60. TYPE
  61.     InetSvcRef = Ptr;
  62.  
  63. {******************************************************************************
  64. ** XTI Options
  65. *******************************************************************************}
  66. { Protocol levels}
  67.  
  68. CONST
  69.     INET_IP                        = $0;
  70.     INET_TCP                    = $06;
  71.     INET_UDP                    = $11;
  72.  
  73. {******************************************************************************
  74. ** Some prefixes for shared libraries
  75. *******************************************************************************}
  76.     kDNRName        =    'dnr';
  77.     kTCPName        =    'tcp';
  78.     kUDPName        =    'udp';
  79.     kRawIPName    =    'rawip';
  80. { TCP Level Options}
  81.     TCP_NODELAY                    = $01;
  82.     TCP_MAXSEG                    = $02;
  83.     TCP_NOTIFY_THRESHOLD        = $10;                            {* not a real XTI option }
  84.     TCP_ABORT_THRESHOLD            = $11;                            {* not a real XTI option }
  85.     TCP_CONN_NOTIFY_THRESHOLD    = $12;                            {* not a real XTI option }
  86.     TCP_CONN_ABORT_THRESHOLD    = $13;                            {* not a real XTI option }
  87.     TCP_OOBINLINE                = $14;                            {* not a real XTI option }
  88.     TCP_URGENT_PTR_TYPE            = $15;                            {* not a real XTI option }
  89.     TCP_KEEPALIVE                = $08;                            { keepalive defined in OpenTransport.h }
  90.     T_GARBAGE                    = 2;
  91.  
  92. { UDP Level Options}
  93.     UDP_CHECKSUM                = $600;
  94.     UDP_RX_ICMP                    = $2;
  95.  
  96. { IP Level Options}
  97.     IP_OPTIONS                    = $01;
  98.     IP_TOS                        = $02;
  99.     IP_TTL                        = $03;
  100.     IP_REUSEADDR                = $04;
  101.     IP_DONTROUTE                = $10;
  102.     IP_BROADCAST                = $20;
  103.     IP_HDRINCL                    = $1002;
  104.     IP_RCVOPTS                    = $1005;
  105.     IP_RCVDSTADDR                = $1007;
  106.     IP_MULTICAST_IF                = $1010;                        { set/get IP multicast interface    }
  107.     IP_MULTICAST_TTL            = $1011;                        { set/get IP multicast timetolive    }
  108.     IP_MULTICAST_LOOP            = $1012;                        { set/get IP multicast loopback    }
  109.     IP_ADD_MEMBERSHIP            = $1013;                        { add an IP group membership        }
  110.     IP_DROP_MEMBERSHIP            = $1014;                        { drop an IP group membership        }
  111.     IP_BROADCAST_IF                = $1015;                        { Set interface for broadcasts     }
  112.     IP_RCVIFADDR                = $1016;                        { Set interface for broadcasts     }
  113.  
  114. {    DVMRP-specific setsockopt commands, from ip_mroute.h}
  115.     DVMRP_INIT                    = $64;
  116.     DVMRP_DONE                    = $65;
  117.     DVMRP_ADD_VIF                = $66;
  118.     DVMRP_DEL_VIF                = $67;
  119.     DVMRP_ADD_LGRP                = $68;
  120.     DVMRP_DEL_LGRP                = $69;
  121.     DVMRP_ADD_MRT                = $6A;
  122.     DVMRP_DEL_MRT                = $6B;
  123.  
  124. { IP_TOS precdence levels}
  125.     T_ROUTINE                    = 0;
  126.     T_PRIORITY                    = 1;
  127.     T_IMMEDIATE                    = 2;
  128.     T_FLASH                        = 3;
  129.     T_OVERRIDEFLASH                = 4;
  130.     T_CRITIC_ECP                = 5;
  131.     T_INETCONTROL                = 6;
  132.     T_NETCONTROL                = 7;
  133.  
  134. {    IP_TOS type of service}
  135.     T_NOTOS                        = $0;
  136.     T_LDELAY                    = 0+(1 * (2**(4)));
  137.     T_HITHRPT                    = 0+(1 * (2**(3)));
  138.     T_HIREL                        = 0+(1 * (2**(2)));
  139.  
  140. { IP Multicast option structures}
  141.  
  142. TYPE
  143.     TIPAddMulticast = RECORD
  144.         multicastGroupAddress:    InetHost;
  145.         interfaceAddress:        InetHost;
  146.     END;
  147.  
  148. {******************************************************************************
  149. ** Protocol-specific events
  150. *******************************************************************************}
  151.  
  152. CONST
  153.     T_DNRSTRINGTOADDRCOMPLETE    = kPRIVATEEVENT + 1;
  154.     T_DNRADDRTONAMECOMPLETE        = kPRIVATEEVENT + 2;
  155.     T_DNRSYSINFOCOMPLETE        = kPRIVATEEVENT + 3;
  156.     T_DNRMAILEXCHANGECOMPLETE    = kPRIVATEEVENT + 4;
  157.     T_DNRQUERYCOMPLETE            = kPRIVATEEVENT + 5;
  158.  
  159. {******************************************************************************
  160. ** InetAddress
  161. *******************************************************************************}
  162.  
  163. TYPE
  164.     InetAddress = RECORD
  165.         fAddressType:            OTAddressType;                            { always AF_INET}
  166.         fPort:                    InetPort;                                { Port number }
  167.         fHost:                    InetHost;                                { Host address in net byte order}
  168.         fUnused:                PACKED ARRAY [0..7] OF SInt8; (* UInt8 *)        { Traditional unused bytes}
  169.     END;
  170.  
  171. {******************************************************************************
  172. ** Domain Name Resolver (DNR) 
  173. *******************************************************************************}
  174.  
  175. CONST
  176.     kMaxHostAddrs                = 10;
  177.     kMaxSysStringLen            = 32;
  178.     kMaxHostNameLen                = 255;
  179.  
  180.     
  181. TYPE
  182.     InetDomainName = PACKED ARRAY [0..kMaxHostNameLen + 1-1] OF CHAR;
  183.  
  184.     InetHostInfo = RECORD
  185.         name:                    InetDomainName;
  186.         addrs:                    ARRAY [0..kMaxHostAddrs-1] OF InetHost;
  187.     END;
  188.  
  189.     InetSysInfo = RECORD
  190.         cpuType:                PACKED ARRAY [0..kMaxSysStringLen-1] OF CHAR;
  191.         osType:                    PACKED ARRAY [0..kMaxSysStringLen-1] OF CHAR;
  192.     END;
  193.  
  194.     InetMailExchange = RECORD
  195.         preference:                UInt16;
  196.         exchange:                InetDomainName;
  197.     END;
  198.  
  199.     InetMailExchangePtr = ^InetMailExchange;
  200.  
  201.     DNSQueryInfo = RECORD
  202.         qType:                    UInt16;
  203.         qClass:                    UInt16;
  204.         ttl:                    UInt32;
  205.         name:                    InetDomainName;
  206.         responseType:            UInt16;                                    { answer, authority, or additional}
  207.         resourceLen:            UInt16;                                    { actual length of array which follows}
  208.         resourceData:            PACKED ARRAY [0..3] OF CHAR;            { size varies}
  209.     END;
  210.  
  211. {******************************************************************************
  212. ** DNSAddress
  213. **
  214. **        The DNSAddress format is optional and may be used in connects,
  215. **        datagram sends, and resolve address calls.   The name takes the 
  216. **        format "somewhere.com" or "somewhere.com:portnumber" where
  217. **        the ":portnumber" is optional.   The length of this structure
  218. **        is arbitrarily limited to the overall max length of a domain
  219. **        name (255 chars), although a longer one can be use successfully
  220. **        if you use this as a template for doing so.   However, the domain name 
  221. **        is still limited to 255 characters.
  222. *******************************************************************************}
  223.     DNSAddress = RECORD
  224.         fAddressType:            OTAddressType;                            { always AF_DNS}
  225.         fName:                    InetDomainName;
  226.     END;
  227.  
  228. {******************************************************************************
  229. ** InetInterfaceInfo
  230. *******************************************************************************}
  231.     InetInterfaceInfo = RECORD
  232.         fAddress:                InetHost;
  233.         fNetmask:                InetHost;
  234.         fBroadcastAddr:            InetHost;
  235.         fDefaultGatewayAddr:    InetHost;
  236.         fDNSAddr:                InetHost;
  237.         fVersion:                UInt16;
  238.         fHWAddrLen:                UInt16;
  239.         fHWAddr:                ^UInt8;
  240.         fIfMTU:                    UInt32;
  241.         fReservedPtrs:            ARRAY [0..1] OF ^UInt8;
  242.         fDomainName:            InetDomainName;
  243.         fReserved:                PACKED ARRAY [0..255] OF SInt8; (* UInt8 *)
  244.     END;
  245.  
  246. {******************************************************************************
  247. ** Static helper functions
  248. *******************************************************************************}
  249.  
  250. PROCEDURE OTInitInetAddress(VAR addr: InetAddress; port: InetPort; host: InetHost);
  251. FUNCTION OTInitDNSAddress(VAR addr: DNSAddress; str: CStringPtr): size_t;
  252. FUNCTION OTInetStringToHost(str: CStringPtr; VAR host: InetHost): OSStatus;
  253. PROCEDURE OTInetHostToString(host: InetHost; str: CStringPtr);
  254. FUNCTION OTInetGetInterfaceInfo(VAR info: InetInterfaceInfo; val: SInt32): OSStatus;
  255. {******************************************************************************
  256. ** InetServices & DNR calls
  257. *******************************************************************************}
  258.  
  259. CONST
  260.     kDefaultInternetServicesPath = -3;
  261.  
  262. {$IFC NOT OTKERNEL }
  263.  
  264. FUNCTION OTOpenInternetServices(cfig: OTConfigurationPtr; oflag: OTOpenFlags; VAR err: OSStatus): InetSvcRef;
  265. FUNCTION OTAsyncOpenInternetServices(cfig: OTConfigurationPtr; oflag: OTOpenFlags; proc: OTNotifyProcPtr; contextPtr: UNIV Ptr): OSStatus;
  266. FUNCTION OTInetStringToAddress(ref: InetSvcRef; name: CStringPtr; VAR hinfo: InetHostInfo): OSStatus;
  267. FUNCTION OTInetAddressToName(ref: InetSvcRef; addr: InetHost; VAR name: InetDomainName): OSStatus;
  268. FUNCTION OTInetSysInfo(ref: InetSvcRef; name: CStringPtr; VAR sysinfo: InetSysInfo): OSStatus;
  269. FUNCTION OTInetMailExchange(ref: InetSvcRef; name: CStringPtr; VAR num: UInt16; mx: InetMailExchangePtr): OSStatus;
  270. FUNCTION OTInetQuery(ref: InetSvcRef; name: CStringPtr; qClass: UInt16; qType: UInt16; buf: CStringPtr; buflen: size_t; argv: UNIV Ptr; argvlen: size_t; flags: OTFlags): OSStatus;
  271.  
  272. CONST
  273.     kDefaultInetInterface        = -1;
  274.     kInetInterfaceInfoVersion    = 2;
  275.  
  276. {$ENDC}
  277.  
  278. {$ALIGN RESET}
  279. {$POP}
  280.  
  281. {$SETC UsingIncludes := OpenTptInternetIncludes}
  282.  
  283. {$ENDC} {__OPENTPTINTERNET__}
  284.  
  285. {$IFC NOT UsingIncludes}
  286.  END.
  287. {$ENDC}
  288.